home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
051-075
/
scopedisk64
/
microray
/
random.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-19
|
3KB
|
79 lines
/************************************************************************
* *
* Copyright (c) 1988, David B. Wecker *
* All Rights Reserved *
* *
* This file is part of DBW_uRAY *
* *
* DBW_uRAY is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY. No author or distributor accepts *
* responsibility to anyone for the consequences of using it or for *
* whether it serves any particular purpose or works at all, unless *
* he says so in writing. Refer to the DBW_uRAY General Public *
* License for full details. *
* *
* Everyone is granted permission to copy, modify and redistribute *
* DBW_uRAY, but only under the conditions described in the *
* DBW_uRAY General Public License. A copy of this license is *
* supposed to have been given to you along with DBW_uRAY so you *
* can know your rights and responsibilities. It should be in a file *
* named COPYING. Among other things, the copyright notice and this *
* notice must be preserved on all copies. *
************************************************************************
* *
* Authors: *
* DBW - David B. Wecker *
* *
* Versions: *
* V1.0 881023 DBW - First released version *
* V1.1 881110 DBW - Fixed scan coherence code *
* V1.2 881125 DBW - Removed ALL scan coherence code (useless) *
* added "fat" extent boxes *
* *
************************************************************************/
#include "uray.h"
/************************************************************************/
/************ random number generator (see uray.h for random table ******/
/************************************************************************/
/*
* srandom(x) - sets a random seed starting point (long int)
* random() - returns next random long int (between 0 and 0x7FFFFFFF)
* rnd() - return next random FLTDBL (between 0 and 1)
*/
srandom( x )
unsigned x;
{
register int i;
/* rebuild the random table */
randtbl[ 0 ] = x;
for( i = 1; i < 63; i++ )
randtbl[i] = 1103515245*randtbl[i - 1] + 12345;
fptr = &randtbl[ 1 ];
rptr = &randtbl[ 0 ];
}
long random()
{
long i;
*fptr += *rptr;
i = (*fptr >> 1)&0x7fffffff; /* chucking least random bit */
if( ++fptr >= end_ptr ) {
fptr = randtbl;
++rptr;
}
else if( ++rptr >= end_ptr ) rptr = randtbl;
return( i );
}
FLTDBL rnd() {
return ((FLTDBL)random()) / 2147483647.0;
}